<?php
	class Galery {
	/*
		Classe Galerie - Version 0.0
		Auteur : Loïc "MetalFox" PARRA
		Classe permettant la création, la gestion et l'affichage des galeries d'articles.
		
		README :
		Pour faire fonctionner la galerie, il faut imperativement que tous les objets que l'on met a l'interieur disposent d'une methode summary(), retournant un string qui est 
		l'affichage de l'objet dans la galerie.
		
		SUCRE SYNTAXIQUE :
		- Pour afficher la galerie, il suffit de faire un echo de la variable la contenant :
			$galerie = new Galerie("Ma Galerie");
			echo $galerie
	*/
		
		var $galerie;
		var $titre;
		
		var $err_empty;
		
		function Galery($titre,$erreurVide="Galerie Vide"){
			/* 
				Constructeur de la galerie.
				@param $titre : titre de la galerie.
				@param $erreurVide : Message d'erreur qui apparait quand la galerie est vide.
				@return : N/A
			*/
			
			$this->galerie = array();
			$this->titre = $titre;
			$this->err_empty = $erreurVide;
		}
		
		function push($element){
			/*
				Ajoute un élément dans la galerie.
				@param $element : element a ajouter.
				$return : N/A.
			*/
			
			try{
				if($element instanceof GaleryItem){ $this->galerie[]=$element;}else{throw new Exception("Galery : un élément n'implemente pas l'interface GaleryItem");}
			}
			catch (Exception $e)
			{
				echo "PHPFoxEngine Error : ".$e->getMessage();
			}
		}
		
		function __toString(){
			/*
				Surcharge de la Magic Method __toString. Permet d'afficher la galerie.
				@param : N/A.
				@return : l'affichage de la galerie.
			*/

			if($this->titre != '')$result = '<h2>'.$this->titre.'</h2>';	
			else $result = '';
			if(count($this->galerie)>0){
				foreach($this->galerie as $element){
					$result .= $element->summary();
				}
			}
			else
			{
				$result .= "<p>".$this->err_empty."</p>";
			}
			return $result;
		}
	}

?>